home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
fb386
/
game
/
thezoom
/
thezoom.bas
< prev
next >
Wrap
BASIC Source File
|
1994-11-16
|
6KB
|
129 lines
10 ' The ZOOM By Mr.Bros
20 CONSOLE 0,25,0
30 CLEAR ,,,330000:SCREEN@ 1:RANDOMIZE TIME:COLOR 6,0:CLS
40 DIM NYU(21000),PIN(23000),BUU(24000),EN(13000),M(6),MO$(257)
50 LOAD@ "nyuryo.snd",NYU
60 LOAD@ "seikai.snd",PIN
70 LOAD@ "buu.snd",BUU
80 '*********** タイトル画面
90 PLAY OFF:SCREEN@ 1
100 SYMBOL(40,200),"PUSH ANY BUTTON",1,1,6
110 SYMBOL(135,20),"The",1,1,6
120 SYMBOL(0,70),"Z M",4,4,6,,,1
130 SYMBOL(56,50),"O",7,7,[150,255,150],,,1
140 SYMBOL(148,50),"O",7,7,[150,255,150],,,1
150 PAINT(99,99),7,[150,255,150]:PAINT(200,100),7,[150,255,150]
160 CIRCLE(122,102),8,0,,,,F:CIRCLE(215,102),8,0,,,,F
170 SYMBOL(100,170),"Programmed By Mr.Bros",.7!,.7!,6
180 WHILE PTRIG(1)=0 AND PTRIG(2)=0:WEND
190 '*********** 使う文字設定
200 SCREEN@ 0:MO=0
210 CLS:LOCATE 23,0:PRINT"出題する文字を設定してください。"
220 LOCATE 30,10:PRINT"数字 ○":M(0)=0
230 LOCATE 30,11:PRINT"英語の大文字 ○":M(1)=0
240 LOCATE 30,12:PRINT"英語の小文字 ○":M(2)=0
250 LOCATE 30,13:PRINT"記号(英モード) ○":M(3)=0
260 LOCATE 30,14:PRINT"ひらがな ×":M(4)=1
270 LOCATE 30,15:PRINT"カタカナ ×":M(5)=1
280 LOCATE 30,16:PRINT"記号(かなモード) ×":M(6)=1
290 LOCATE 28,22:PRINT"[RUN]ボタンで決定"
300 GOSUB 380
310 IF PTRIG(1)=1 THEN IF M(MO)=0 THEN M(MO)=1:GOSUB 360 ELSE M(MO)=0:GOSUB 370
320 IF PAD(1)=1 THEN IF MO<>0 THEN MO=MO-1:GOSUB 380
330 IF PAD(1)=5 THEN IF MO<>6 THEN MO=MO+1:GOSUB 380
340 IF PTRIG(1)=4 THEN 390
350 GOTO 310
360 LOCATE 46,10+MO:PRINT"×":WAIT 20:RETURN
370 LOCATE 46,10+MO:PRINT"○":WAIT 20:RETURN
380 CLS 5:WAIT 3:SYMBOL(210,190+19*MO),"≫",1,1,7:RETURN
390 '*********** 使う文字読み込み
400 DAT=0:HA=0
410 IF M(0)=0 THEN RESTORE 1140:FOR I=DAT TO DAT+9:READ MO$(I):NEXT:DAT=DAT+10:HA=1
420 IF M(1)=0 THEN RESTORE 1080:FOR I=DAT TO DAT+25:READ MO$(I):NEXT:DAT=DAT+26:HA=1
430 IF M(2)=0 THEN RESTORE 1160:FOR I=DAT TO DAT+25:READ MO$(I):NEXT:DAT=DAT+26:HA=1
440 IF M(3)=0 THEN RESTORE 1110:FOR I=DAT TO DAT+25:READ MO$(I):NEXT:DAT=DAT+26:HA=1
450 IF M(4)=0 THEN RESTORE 1190:FOR I=DAT TO DAT+80:READ MO$(I):NEXT:DAT=DAT+81:HA=1
460 IF M(5)=0 THEN RESTORE 1250:FOR I=DAT TO DAT+80:READ MO$(I):NEXT:DAT=DAT+81:HA=1
470 IF M(6)=0 THEN RESTORE 1310:FOR I=DAT TO DAT+7:READ MO$(I):NEXT:DAT=DAT+8:HA=1
480 IF HA=0 THEN 210
490 '*************** 点数方式選択
500 CLS:WAIT 50:SCREEN@ 1:LOCATE 18,13:PRINT "B=1問正解するごとに1点 A=倍率が得点"
510 IF PTRIG(1)<>1 AND PTRIG(1)<>2 THEN 510
520 IF PTRIG(1)=2 THEN TT=1:GOTO 550
530 TT=2
540 '*************** 画面作成
550 CLS:FOR I=0 TO 7:LINE(I*20,I*15)-(319-I*20,239-I*15),PSET,1,B:NEXT
560 LINE(0,0)-(319,239),PSET,1
570 LINE(319,0)-(0,239),PSET,1
580 LINE(141,106)-(178,133),PSET,0,BF
590 '*************** 倍率1の時の文字の位置決定
600 WAIT 70:J=90:X=0:Y=0
610 '*************** 出題する文字決定
620 MJ$=MO$(INT(RND*DAT))
630 '*************** 出題&回答待ち
640 P1=1:P2=2
650 IF PTRIG(P1)=1 THEN P=P1:GOTO 720
660 IF PTRIG(P2)=1 THEN P=P2:GOTO 720
670 SWAP P1,P2:J=J-1
680 IF J=0 THEN CLS:LOCATE 21,12:PRINT"時間切れです。次の文字にうつります。":WAIT 200:GOTO 540
690 SYMBOL(161-8*J+X,115-8*J+Y),MJ$,J,J,[INT(RND*32)*8,INT(RND*32)*8,INT(RND*32)*8]:LOCATE 36,13:PRINT"倍率:";J:LOCATE 35,12
700 GOTO 650
710 '*************** 入力待ち
720 PLAY"@66V15B32E16":CLS:WAIT 100:PCMPLAY NYU:SYMBOL(0,0),AKCNV$(STR$(P))+"Pさんどうぞ",1,1
730 CONSOLE 0,24,1:LOCATE 36,13:PRINT"倍率:";J:LOCATE 0,4:INPUT "答は?",A$
740 IF A$="" OR LEN(A$)<>2 THEN 730
750 IF A$<>MJ$ THEN 830
760 '*************** 判定&点数・点差表示
770 IF A$=MJ$ THEN SYMBOL(75,80),"正解です!",2.5!,2.5!,4,,,3
780 IF P=1 AND TT=1 THEN PS1=PS1+1
790 IF P=1 AND TT=2 THEN PS1=PS1+J
800 IF P=2 AND TT=1 THEN PS2=PS2+1
810 IF P=2 AND TT=2 THEN PS2=PS2+J
820 PCMPLAY PIN:LOCATE 25,20:PRINT PS1;" 対 ";PS2:GOSUB 900:GOSUB 910:WAIT 200:CONSOLE 0,25,0:GOTO 540
830 PCMPLAY BUU
840 SYMBOL(75,80),"MISS!",2.5!,2.5!,2,,,3
850 IF P=1 AND TT=1 THEN PS1=PS1-3
860 IF P=1 AND TT=2 THEN PS1=PS1-J*3
870 IF P=2 AND TT=1 THEN PS2=PS2-3
880 IF P=2 AND TT=2 THEN PS2=PS2-J*3
890 LOCATE 25,20:PRINT PS1;" 対 ";PS2:GOSUB 900:GOSUB 910:WAIT 200:CONSOLE 0,25,0:GOTO 540
900 LOCATE 25,22:PRINT ABS(PS1-PS2);"点差です":RETURN
910 IF ABS(PS1-PS2)=>10 AND TT=1 THEN 930
920 IF ABS(PS1-PS2)=>200 AND TT=2 THEN 930 ELSE RETURN
930 '*************** エンディング
940 WAIT 200:CONSOLE 0,25,0
980 CLS:SCREEN@0:LOCATE 32,13:PRINT"ENDING":LOAD@"ending.tif",(0,5)
990 CLS 4:IF PS2<PS1 THEN E=1 ELSE E=2
1000 SYMBOL(10,10),AKCNV$(STR$(E))+"Pさんの勝利!",4,4,2,,,7
1010 SYMBOL(130,200),STR$(PS1)+" 対 "+STR$(PS2),4,4,6,,,7
1020 SYMBOL(10,400),"もう一度しますか Yes(A) No(B)",2,2.4!,4,,,7
1030 IF PTRIG(1)=1 THEN CLS:PS1=0:PS2=0:GOTO 80
1040 IF PTRIG(1)=2 THEN END
1050 GOTO 1030
1060 '**************** データ
1070 '/// 英語の大文字
1080 DATA A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U
1090 DATA V,W,X,Y,Z
1100 '/// 記号(英モード)
1110 DATA !,”,#,$,%,&,’,(,),+,-,*,/,=,.,,,<,>,_,{,}
1120 DATA [,],^,;,:
1130 '/// 数字
1140 DATA 1,2,3,4,5,6,7,8,9,0
1150 '/// 英語の小文字
1160 DATA a,b,c,d,e,f,g,h,i,j,k,l,m,n,o
1170 DATA p,q,r,s,t,u,v,w,x,y,z
1180 '/// ひらがな
1190 DATA あ,い,う,え,お,か,き,く,け,こ,さ,し,す,せ,そ,た,ち,つ,て,と
1200 DATA な,に,ぬ,ね,の,は,ひ,ふ,へ,ほ,ま,み,む,め,も,や,ゆ,よ
1210 DATA ら,り,る,れ,ろ,わ,を,ん
1220 DATA ぁ,ぃ,ぅ,ぇ,ぉ,が,ぎ,ぐ,げ,ご,ざ,じ,ず,ぜ,ぞ,だ,ぢ,づ,で,ど
1230 DATA ば,び,ぶ,べ,ぼ,ぱ,ぴ,ぷ,ぺ,ぽ,,ゃ,ゅ,ょ,っ
1240 '/// カタカナ
1250 DATA ア,イ,ウ,エ,オ,カ,キ,ク,ケ,コ,サ,シ,ス,セ,ソ,タ,チ,ツ,テ,ト
1260 DATA ナ,ニ,ヌ,ネ,ノ,ハ,ヒ,フ,ヘ,ホ,マ,ミ,ム,メ,モ,ヤ,ユ,ヨ
1270 DATA ラ,リ,ル,レ,ロ,ワ,ヲ,ン
1280 DATA ァ,ィ,ゥ,ェ,ォ,ガ,ギ,グ,ゲ,ゴ,ザ,ジ,ズ,ゼ,ゾ,ダ,ヂ,ヅ,デ,ド
1290 DATA バ,ビ,ブ,ベ,ボ,パ,ピ,プ,ペ,ポ,ヴ,ャ,ュ,ョ,ッ
1300 '/// 記号(かなモード)
1310 DATA ー,゛,゜,・,。,、,「,」